home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / programming / emacs-complete / fsf / emacs / src / makefile.in.in < prev    next >
Makefile  |  1994-08-26  |  28KB  |  925 lines

  1. # Makefile for GNU Emacs.
  2. # Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc.
  3.  
  4. # This file is part of GNU Emacs.
  5.  
  6. # GNU Emacs is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2, or (at your option)
  9. # any later version.
  10.  
  11. # GNU Emacs is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. # GNU General Public License for more details.
  15.  
  16. # You should have received a copy of the GNU General Public License
  17. # along with GNU Emacs; see the file COPYING.  If not, write to
  18. # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. # Here are the things that we expect ../configure to edit.
  21. srcdir=@srcdir@
  22. VPATH=@srcdir@
  23. CC=@CC@
  24. CPP=@CPP@
  25. CFLAGS=@CFLAGS@
  26. LN_S=@LN_S@
  27. # Substitute an assignment for the MAKE variable, because
  28. # BSD doesn't have it as a default.
  29. @SET_MAKE@
  30.  
  31. # On Xenix and the IBM RS6000, double-dot gets screwed up.
  32. dot = .
  33. lispdir = ${srcdir}/$(dot)$(dot)/lisp/
  34. libsrc = $(dot)$(dot)/lib-src/
  35. etc = $(dot)$(dot)/etc/
  36. shortnamesdir = $(dot)$(dot)/shortnames/
  37. cppdir = $(dot)$(dot)/cpp/
  38. oldXMenudir = $(dot)$(dot)/oldXMenu/
  39. lwlibdir = $(dot)$(dot)/lwlib/
  40.  
  41. # Configuration files for .o files to depend on.
  42. M_FILE = ${srcdir}/@machfile@
  43. S_FILE = ${srcdir}/@opsysfile@
  44. config_h = config.h $(M_FILE) $(S_FILE)
  45.  
  46. # ========================== start of cpp stuff ======================= */
  47. /* From here on, comments must be done in C syntax.  */
  48.  
  49. CPPFLAGS=
  50. LDFLAGS=
  51. C_SWITCH_SYSTEM=
  52.  
  53. /* just to be sure the sh is used */
  54. SHELL=/bin/sh
  55.  
  56. #define NO_SHORTNAMES
  57. #define THIS_IS_YMAKEFILE
  58. #define NOT_C_CODE
  59. #include "config.h"
  60.  
  61. /* We won't really call alloca;
  62.    don't let the file name alloca.c get messed up.  */
  63. #ifdef alloca
  64. #undef alloca
  65. #endif
  66.  
  67. /* Use HAVE_X11 as an alias for X11 in this file
  68.    to avoid problems with X11 as a subdirectory name
  69.    in -I and other such options which pass through this file. */
  70.  
  71. #ifdef X11
  72. #define HAVE_X11
  73. #undef X11
  74. #endif
  75.  
  76. /* On some machines #define register is done in config;
  77.    don't let it interfere with this file.  */
  78. #undef register
  79.  
  80. /* On some systems we may not be able to use the system make command. */
  81. #ifdef MAKE_COMMAND
  82. MAKE = MAKE_COMMAND
  83. #endif
  84.  
  85. #ifdef C_COMPILER
  86. CC = C_COMPILER
  87. #endif
  88.  
  89. /* GNU libc requires ORDINARY_LINK so that its own crt0 is used.
  90.    Linux is an exception because it uses a funny variant of GNU libc.  */
  91. #ifdef __GNU_LIBRARY__
  92. #ifndef LINUX
  93. #define ORDINARY_LINK
  94. #endif
  95. #endif
  96.  
  97. /* Some machines don't find the standard C libraries in the usual place.  */
  98. #ifndef ORDINARY_LINK
  99. #ifndef LIB_STANDARD
  100. #define LIB_STANDARD -lc
  101. #endif
  102. #else
  103. #ifndef LIB_STANDARD
  104. #define LIB_STANDARD
  105. #endif
  106. #endif
  107.  
  108. /* Unless inhibited or changed, use -lg to link for debugging.  */
  109. #ifndef LIBS_DEBUG
  110. #define LIBS_DEBUG -lg
  111. #endif
  112.  
  113. /* Some s/*.h files define this to request special libraries.  */
  114. #ifndef LIBS_SYSTEM
  115. #define LIBS_SYSTEM
  116. #endif
  117.  
  118. /* Some m/*.h files define this to request special libraries.  */
  119. #ifndef LIBS_MACHINE
  120. #define LIBS_MACHINE
  121. #endif
  122.  
  123. #ifndef LIB_MATH
  124. # ifdef LISP_FLOAT_TYPE
  125. #  define LIB_MATH -lm
  126. # else /* ! defined (LISP_FLOAT_TYPE) */
  127. #  define LIB_MATH
  128. # endif /* ! defined (LISP_FLOAT_TYPE) */
  129. #endif /* LIB_MATH */
  130.  
  131. /* Some s/*.h files define this to request special switches in ld.  */
  132. #ifndef LD_SWITCH_SYSTEM
  133. #if !defined (__GNUC__) && (defined(COFF_ENCAPSULATE) || (defined (BSD) && !defined (COFF)))
  134. #define LD_SWITCH_SYSTEM -X
  135. #else /* ! defined(COFF_ENCAPSULATE) || (defined (BSD) && !defined (COFF)) */
  136. #define LD_SWITCH_SYSTEM
  137. #endif /* ! defined(COFF_ENCAPSULATE) || (defined (BSD) && !defined (COFF)) */
  138. #endif /* LD_SWITCH_SYSTEM */
  139.  
  140. /* Some m/*.h files define this to request special switches in ld.  */
  141. #ifndef LD_SWITCH_MACHINE
  142. #define LD_SWITCH_MACHINE
  143. #endif
  144.  
  145. /* Some m/*.h files define this to request special switches in cc.  */
  146. #ifndef C_SWITCH_MACHINE
  147. #define C_SWITCH_MACHINE
  148. #endif
  149.  
  150. /* Some s/*.h files define this to request special switches in cc.  */
  151. #ifndef C_SWITCH_SYSTEM
  152. #define C_SWITCH_SYSTEM
  153. #endif
  154.  
  155. /* These macros are for switches specifically related to X Windows.  */
  156. #ifndef C_SWITCH_X_MACHINE
  157. #define C_SWITCH_X_MACHINE
  158. #endif
  159.  
  160. #ifndef C_SWITCH_X_SYSTEM
  161. #define C_SWITCH_X_SYSTEM
  162. #endif
  163.  
  164. #ifndef C_SWITCH_X_SITE
  165. #define C_SWITCH_X_SITE
  166. #endif
  167.  
  168. #ifndef LD_SWITCH_X_SITE
  169. #define LD_SWITCH_X_SITE
  170. #endif
  171.  
  172. #ifndef LD_SWITCH_X_DEFAULT
  173. #define LD_SWITCH_X_DEFAULT
  174. #endif
  175.  
  176. /* These can be passed in from config.h to define special load and
  177.    compile switches needed by individual sites */
  178. #ifndef LD_SWITCH_SITE
  179. #define LD_SWITCH_SITE
  180. #endif
  181.  
  182. #ifndef C_SWITCH_SITE
  183. #define C_SWITCH_SITE
  184. #endif
  185.  
  186. #ifndef ORDINARY_LINK
  187.  
  188. #ifndef CRT0_COMPILE
  189. #define CRT0_COMPILE $(CC) -c $(ALL_CFLAGS) C_SWITCH_ASM 
  190. #endif
  191.  
  192. #ifndef START_FILES
  193. #ifdef NO_REMAP
  194. #ifdef COFF_ENCAPSULATE
  195. #define START_FILES pre-crt0.o /usr/local/lib/gcc-crt0.o
  196. #else /* ! defined (COFF_ENCAPSULATE) */
  197. #define START_FILES pre-crt0.o /lib/crt0.o
  198. #endif /* ! defined (COFF_ENCAPSULATE) */
  199. #else /* ! defined (NO_REMAP) */
  200. #define START_FILES crt0.o
  201. #endif /* ! defined (NO_REMAP) */
  202. #endif /* START_FILES */
  203. STARTFILES = START_FILES
  204.  
  205. #else /* ORDINARY_LINK */
  206.  
  207. /* config.h might want to force START_FILES anyway */
  208. #ifdef START_FILES
  209. STARTFILES = START_FILES
  210. #endif /* START_FILES */
  211.  
  212. #endif /* not ORDINARY_LINK */
  213.  
  214.  
  215. /* cc switches needed to make `asm' keyword work.
  216.    Nothing special needed on most machines.  */
  217. #ifndef C_SWITCH_ASM
  218. #define C_SWITCH_ASM
  219. #endif
  220.  
  221. /* Figure out whether the system cpp can handle long names.
  222.    Do it by testing it right now.
  223.    If it loses, arrange to use the GNU cpp.  */
  224.  
  225. #define LONGNAMEBBBFOOX
  226. #ifdef LONGNAMEBBBARFOOX
  227. /* Installed cpp fails to distinguish those names!  */
  228. /* Arrange to compile the GNU cpp later on */
  229. #define NEED_CPP
  230. /* Cause cc to invoke the cpp that comes with Emacs,
  231.    which will be in a file named localcpp.  */
  232. MYCPPFLAG= -Blocal
  233. /* LOCALCPP is the local one or nothing.
  234.    CPP is the local one or the standardone.  */
  235. LOCALCPP= localcpp
  236. #endif /* ! defined (LONGNAMEBBBARFOOX) */
  237.  
  238. #ifdef SHORTNAMES
  239. SHORT= shortnames
  240. #endif
  241.  
  242. /* DO NOT use -R.  There is a special hack described in lastfile.c
  243.    which is used instead.  Some initialized data areas are modified
  244.    at initial startup, then labeled as part of the text area when
  245.    Emacs is dumped for the first time, and never changed again. */
  246.  
  247. /* -Demacs is needed to make some files produce the correct version
  248.    for use in Emacs.
  249.  
  250.    -DHAVE_CONFIG_H is needed for some other files to take advantage of
  251.    the information in `config.h'.  */
  252.  
  253. /* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
  254.    since it may have -I options that should override those two.  */
  255. ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAG) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM ${CFLAGS}
  256. .c.o:
  257.     $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
  258.  
  259. #ifndef LIBX10_MACHINE
  260. #define LIBX10_MACHINE
  261. #endif
  262.  
  263. #ifndef LIBX11_MACHINE
  264. #define LIBX11_MACHINE
  265. #endif
  266.  
  267. #ifndef LIBX10_SYSTEM
  268. #define LIBX10_SYSTEM
  269. #endif
  270.  
  271. #ifndef LIBX11_SYSTEM
  272. #define LIBX11_SYSTEM
  273. #endif
  274.  
  275. #ifndef LIB_X11_LIB
  276. #define LIB_X11_LIB -lX11
  277. #endif
  278.  
  279. #ifdef HAVE_X_WINDOWS
  280. #ifdef HAVE_X_MENU
  281.  
  282. /* Include xmenu.o in the list of X object files.  */
  283. XOBJ= xterm.o xfns.o xfaces.o xmenu.o xselect.o xrdb.o
  284.  
  285. /* The X Menu stuff is present in the X10 distribution, but missing
  286.    from X11.  If we have X10, just use the installed library;
  287.    otherwise, use our own copy.  */
  288. #ifdef HAVE_X11
  289. #ifdef USE_X_TOOLKIT
  290. OLDXMENU=liblw.a
  291. LIBXMENU= $(OLDXMENU)
  292. #else /* not USE_X_TOOLKIT */
  293. OLDXMENU= libXMenu11.a
  294. LIBXMENU= $(OLDXMENU)
  295. #endif /* not USE_X_TOOLKIT */
  296. #else /* not HAVE_X11 */
  297. LIBXMENU= -lXMenu
  298. #endif /* not HAVE_X11 */
  299.  
  300. #else /* not HAVE_X_MENU */
  301.  
  302. /* Otherwise, omit xmenu.o from the list of X object files, and
  303.    don't worry about the menu library at all.  */
  304. XOBJ= xterm.o xfns.o xfaces.o xselect.o xrdb.o
  305. LIBXMENU=
  306. #endif /* not HAVE_X_MENU */
  307.  
  308. #ifdef USE_X_TOOLKIT
  309. #define @X_TOOLKIT_TYPE@
  310. #if defined (LUCID) || defined (ATHENA)
  311. LIBW= -lXaw
  312. #endif
  313. #ifdef MOTIF
  314. #ifdef LIB_MOTIF
  315. LIBW= LIB_MOTIF
  316. #else
  317. LIBW= -lXm
  318. #endif
  319. #endif
  320. #ifdef OPEN_LOOK
  321. LIBW= -lXol
  322. #endif
  323.  
  324. #ifdef HAVE_X11XTR6
  325. LIBXTR6 = -lSM -lICE
  326. #endif
  327.  
  328. LIBXT= $(LIBW) -lXmu -lXt $(LIBXTR6) -lXext
  329. #else
  330. LIBXT=
  331. #endif
  332.  
  333. #ifdef HAVE_X11
  334. /* LD_SWITCH_X_DEFAULT comes after everything else that specifies
  335.    options for where to find X libraries, but before those libraries.  */
  336. LIBX= $(LIBXMENU) LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT $(LIBXT) LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM
  337. #else /* not HAVE_X11 */
  338. LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
  339. #endif /* not HAVE_X11 */
  340. #endif /* not HAVE_X_WINDOWS */
  341.  
  342. #ifndef ORDINARY_LINK
  343. /* Fix linking if compiled with GCC.  */
  344. #ifdef __GNUC__
  345.  
  346. #if __GNUC__ > 1
  347.  
  348. #ifdef LINKER
  349. #define LINKER_WAS_SPECIFIED
  350. #endif
  351.  
  352. /* Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
  353.    places that are difficult to figure out at make time.  Fortunately,
  354.    these same versions allow you to pass arbitrary flags on to the
  355.    linker, so there's no reason not to use it as a linker.
  356.  
  357.    Well, it's not quite perfect.  The `-nostdlib' keeps GCC from
  358.    searching for libraries in its internal directories, so we have to
  359.    ask GCC explicitly where to find libgcc.a.  */
  360.  
  361. #ifndef LINKER
  362. #define LINKER $(CC) -nostdlib
  363. #endif
  364.  
  365. #ifndef LIB_GCC
  366. /* Ask GCC where to find libgcc.a.  */
  367. #define LIB_GCC `$(CC) -print-libgcc-file-name`
  368. #endif /* not LIB_GCC */
  369.  
  370. GNULIB_VAR = LIB_GCC
  371.  
  372. #ifndef LINKER_WAS_SPECIFIED
  373. /* GCC passes any argument prefixed with -Xlinker directly to the
  374.    linker.  See prefix-args.c for an explanation of why we don't do
  375.    this with the shell's `for' construct.
  376.    Note that some people don't have '.'  in their paths, so we must
  377.    use ./prefix-args.  */
  378. #define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
  379. #else
  380. #define YMF_PASS_LDFLAGS(flags) flags
  381. #endif
  382.  
  383. #else /* __GNUC__ < 2 */
  384.  
  385. #ifndef LIB_GCC
  386. #define LIB_GCC /usr/local/lib/gcc-gnulib
  387. #endif /* not LIB_GCC */
  388. GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi`
  389. #endif /* __GNUC__ < 2 */
  390. #else /* not __GNUC__ */
  391. GNULIB_VAR = 
  392.  
  393. #endif /* not __GNUC__ */
  394. #endif /* not ORDINARY_LINK */
  395.  
  396. /* Specify address for ld to start loading at,
  397.    if requested by configuration.  */
  398. #ifdef LD_TEXT_START_ADDR
  399. STARTFLAGS = -T LD_TEXT_START_ADDR -e __start
  400. #endif
  401.  
  402. #ifdef ORDINARY_LINK
  403. LD = $(CC)
  404. #else
  405. #ifdef COFF_ENCAPSULATE
  406. LD=$(CC) -nostdlib
  407. #else /* not ORDINARY_LINK */
  408. #ifdef LINKER
  409. LD=LINKER
  410. #else /* not LINKER */
  411. LD=ld
  412. #endif /* not LINKER */
  413. #endif /* not COFF_ENCAPSULATE */
  414. #endif /* not ORDINARY_LINK */
  415.  
  416. ALL_LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE LD_SWITCH_SITE $(LDFLAGS)
  417.  
  418. /* A macro which other sections of ymakefile can redefine to munge the
  419.    flags before they're passed to LD.  This is helpful if you have
  420.    redefined LD to something odd, like "gcc".  */
  421. #ifndef YMF_PASS_LDFLAGS
  422. #define YMF_PASS_LDFLAGS(flags) flags
  423. #endif
  424.  
  425. /* Allow config.h to specify a replacement file for unexec.c.  */
  426. #ifndef UNEXEC
  427. #define UNEXEC unexec.o
  428. #endif
  429. #ifndef UNEXEC_SRC
  430. #define UNEXEC_SRC unexec.c
  431. #endif
  432.  
  433. #ifdef USE_TEXT_PROPERTIES
  434. #define INTERVAL_SRC intervals.h
  435. #define INTERVAL_OBJ intervals.o textprop.o
  436. #else
  437. #define INTERVAL_SRC
  438. #define INTERVAL_OBJ
  439. #endif
  440.  
  441. #ifdef HAVE_GETLOADAVG
  442. #define GETLOADAVG_OBJ
  443. #else
  444. #define GETLOADAVG_OBJ getloadavg.o
  445. #endif
  446.  
  447. /* lastfile must follow all files
  448.    whose initialized data areas should be dumped as pure by dump-emacs. */
  449. obj=    dispnew.o frame.o scroll.o xdisp.o window.o \
  450.     cm.o term.o $(XOBJ) \
  451.     emacs.o keyboard.o macros.o keymap.o sysdep.o \
  452.     buffer.o filelock.o insdel.o marker.o INTERVAL_OBJ \
  453.     minibuf.o fileio.o dired.o filemode.o \
  454.     cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \
  455.     alloc.o data.o doc.o editfns.o callint.o \
  456.     eval.o floatfns.o fns.o print.o lread.o \
  457.     abbrev.o syntax.o UNEXEC mocklisp.o bytecode.o \
  458.     process.o callproc.o \
  459.     doprnt.o GETLOADAVG_OBJ
  460.  
  461. /* Object files used on some machine or other.
  462.    These go in the DOC file on all machines
  463.    in case they are needed there.  */
  464. SOME_MACHINE_OBJECTS = sunfns.o
  465.  
  466. #ifdef TERMINFO
  467. /* Used to be -ltermcap here.  If your machine needs that,
  468.    define LIBS_TERMCAP in the m/*.h file.  */
  469. #ifndef LIBS_TERMCAP
  470. #define LIBS_TERMCAP -lcurses
  471. #endif /* LIBS_TERMCAP */
  472. termcapobj = terminfo.o
  473. #else /* ! defined (TERMINFO) */
  474. #ifndef LIBS_TERMCAP
  475. #define LIBS_TERMCAP
  476. termcapobj = termcap.o tparam.o
  477. #else /* LIBS_TERMCAP */
  478. termcapobj = tparam.o
  479. #endif /* LIBS_TERMCAP */
  480. #endif /* ! defined (TERMINFO) */
  481.  
  482.  
  483. #ifndef SYSTEM_MALLOC
  484.  
  485. #ifdef GNU_MALLOC  /* New GNU malloc */
  486. #ifdef REL_ALLOC
  487. mallocobj = gmalloc.o ralloc.o vm-limit.o
  488. #else /* ! defined (REL_ALLOC) */
  489. mallocobj = gmalloc.o vm-limit.o
  490. #endif /* ! defined (REL_ALLOC) */
  491. #else /* Old GNU malloc */
  492. mallocobj = malloc.o
  493. #endif /* Old GNU malloc */
  494.  
  495. #endif /* SYSTEM_MALLOC */
  496.  
  497.  
  498. #ifndef HAVE_ALLOCA
  499. allocaobj = alloca.o
  500. #else
  501. allocaobj =
  502. #endif
  503.  
  504. #ifdef USE_X_TOOLKIT
  505. widgetobj= widget.o
  506. #else /* not USE_X_TOOLKIT */
  507. widgetobj=
  508. #endif /* not USE_X_TOOLKIT */
  509.  
  510.  
  511. /* define otherobj as list of object files that make-docfile
  512.    should not be told about.  */
  513. otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj)
  514.  
  515. #ifdef LISP_FLOAT_TYPE
  516. #define FLOAT_SUPPORT ${lispdir}float-sup.elc
  517. #else
  518. #define FLOAT_SUPPORT
  519. #endif
  520.  
  521. #ifdef MULTI_FRAME
  522. #define FRAME_SUPPORT ${lispdir}frame.elc ${lispdir}menu-bar.elc \
  523.   ${lispdir}mouse.elc ${lispdir}select.elc ${lispdir}scroll-bar.elc \
  524.   ${lispdir}faces.elc
  525. #else
  526. #define FRAME_SUPPORT
  527. #endif
  528.  
  529. #ifdef HAVE_X_WINDOWS
  530. #define X_WINDOWS_SUPPORT
  531. #else
  532. #define X_WINDOWS_SUPPORT
  533. #endif
  534.  
  535. #ifdef VMS
  536. #define VMS_SUPPORT ${lispdir}vmsproc.elc ${lispdir}vms-patch
  537. #else
  538. #define VMS_SUPPORT
  539. #endif
  540.  
  541. #ifdef MSDOS
  542. #define MSDOS_SUPPORT ${lispdir}ls-lisp.elc ${lispdir}disp-tab.elc ${lispdir}dos-fns.elc ${lispdir}mouse.elc
  543. #else
  544. #define MSDOS_SUPPORT
  545. #endif
  546.  
  547. /* List of Lisp files loaded into the dumped Emacs.  It's arranged
  548.    like this because it's easier to generate it semi-mechanically from
  549.    loadup.el this way.
  550.  
  551.    Note that this list should not include lisp files which might not
  552.    be present, like site-load.el and site-init.el; this makefile
  553.    expects them all to be either present or buildable.  */
  554. lisp= \
  555.     ${lispdir}abbrev.elc \
  556.     ${lispdir}buff-menu.elc \
  557.     ${lispdir}byte-run.elc \
  558.     ${lispdir}c-mode.elc \
  559.     ${lispdir}files.elc \
  560.     ${lispdir}fill.elc \
  561.     FLOAT_SUPPORT \
  562.     FRAME_SUPPORT \
  563.     X_WINDOWS_SUPPORT \
  564.     ${lispdir}help.elc \
  565.     ${lispdir}indent.elc \
  566.     ${lispdir}isearch.elc \
  567.     ${lispdir}lisp-mode.elc \
  568.     ${lispdir}lisp.elc \
  569.     ${lispdir}loaddefs.el \
  570.     ${lispdir}map-ynp.elc \
  571.     ${lispdir}page.elc \
  572.     ${lispdir}paragraphs.elc \
  573.     ${lispdir}paths.el \
  574.     ${lispdir}register.elc \
  575.     ${lispdir}replace.elc \
  576.     ${lispdir}simple.elc \
  577.     ${lispdir}startup.elc \
  578.     ${lispdir}subr.elc \
  579.     ${lispdir}text-mode.elc \
  580.     ${lispdir}vc-hooks.elc \
  581.     VMS_SUPPORT \
  582.     MSDOS_SUPPORT \
  583.     ${lispdir}window.elc \
  584.     ${lispdir}version.el
  585.  
  586. /* Construct full set of libraries to be linked.
  587.    Note that SunOS needs -lm to come before -lc; otherwise, you get
  588.    duplicated symbols.  If the standard libraries were compiled
  589.    with GCC, we might need gnulib again after them.  */
  590. LIBES = $(LIBX) LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
  591.    LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR)
  592.  
  593. /* Enable recompilation of certain other files depending on system type.  */
  594.  
  595. #ifndef OTHER_FILES
  596. #define OTHER_FILES
  597. #endif
  598.  
  599. /* Enable inclusion of object files in temacs depending on system type.  */
  600. #ifndef OBJECTS_SYSTEM
  601. #define OBJECTS_SYSTEM
  602. #endif
  603.  
  604. #ifndef OBJECTS_MACHINE
  605. #define OBJECTS_MACHINE
  606. #endif
  607.  
  608. all: emacs OTHER_FILES
  609.  
  610. emacs: temacs ${etc}DOC ${lisp}
  611. #ifdef CANNOT_DUMP
  612.     rm -f emacs
  613.     ln temacs emacs
  614. #else
  615. #ifdef HAVE_SHM
  616.     ./temacs -nl -batch -l loadup dump
  617. #else /* ! defined (HAVE_SHM) */
  618.     ./temacs -batch -l loadup dump
  619. #endif /* ! defined (HAVE_SHM) */
  620. #endif /* ! defined (CANNOT_DUMP) */
  621.  
  622. ${etc}DOC: ${libsrc}make-docfile ${obj} ${lisp}
  623.     -rm -f ${etc}DOC
  624.     ${libsrc}make-docfile -d ${srcdir} ${obj} ${SOME_MACHINE_OBJECTS} \
  625.       ${lisp} > ${etc}DOC
  626.  
  627. ${libsrc}make-docfile:
  628.     cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile
  629.  
  630. /* Some systems define this to cause parallel Make-ing.  */
  631. #ifndef MAKE_PARALLEL
  632. #define MAKE_PARALLEL
  633. #endif
  634.  
  635. temacs: MAKE_PARALLEL $(LOCALCPP) $(SHORT) $(STARTFILES) $(OLDXMENU) ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE prefix-args
  636.     $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${ALL_LDFLAGS}) \
  637.     -o temacs ${STARTFILES} ${obj} ${otherobj}  \
  638.     OBJECTS_SYSTEM OBJECTS_MACHINE ${LIBES}
  639.  
  640. prefix-args: prefix-args.c $(config_h)
  641.     $(CC) $(ALL_CFLAGS) ${srcdir}/prefix-args.c -o prefix-args
  642.  
  643. /* These are needed for C compilation, on the systems that need them */
  644. #ifdef NEED_CPP
  645. CPP = ./localcpp
  646. localcpp:
  647.     cd ${cppdir}; ${MAKE} ${MFLAGS} EMACS=-DEMACS
  648.     ln ${cppdir}cpp localcpp  /* Name where ALL_CFLAGS will refer to it */
  649. /* cc appears to be cretinous and require all of these to exist
  650.    if -B is specified -- we can't use one local pass and let the
  651.    others be the standard ones.  What a loser.
  652.    We can't even use ln, since they are probably
  653.    on different disks.  */
  654.     cp /lib/ccom localccom
  655.     -cp /lib/optim localoptim
  656.     -cp /lib/c2 localc2
  657.     cp /bin/as localas
  658. #else /* ! defined (NEED_CPP) */
  659. CPP = $(CC) -E
  660. #endif /* ! defined (NEED_CPP) */
  661.  
  662. #ifdef SHORTNAMES
  663. shortnames:
  664.     cd ${shortnamesdir}; ${MAKE} ${MFLAGS}
  665. #endif
  666.  
  667. /* Don't lose if this was not defined.  */
  668. #ifndef OLDXMENU_OPTIONS
  669. #define OLDXMENU_OPTIONS
  670. #endif
  671.  
  672. /* Don't lose if this was not defined.  */
  673. #ifndef LWLIB_OPTIONS
  674. #define LWLIB_OPTIONS
  675. #endif
  676.  
  677. #ifdef HAVE_X_WINDOWS
  678. #ifdef HAVE_X11
  679. #ifdef USE_X_TOOLKIT
  680. $(OLDXMENU): really-lwlib
  681.     -rm -f $(OLDXMENU) /* We might have a link to an old version.  */
  682.     ${LN_S} ${lwlibdir}liblw.a $(OLDXMENU)
  683.  
  684. /* Encode the values of these two macros in Make variables,
  685.    so we can use $(...) to substitute their values within "...".  */
  686. C_SWITCH_MACHINE_1 = C_SWITCH_MACHINE
  687. C_SWITCH_SYSTEM_1 = C_SWITCH_SYSTEM
  688. C_SWITCH_SITE_1 = C_SWITCH_SITE
  689. C_SWITCH_X_SITE_1 = C_SWITCH_X_SITE
  690. C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
  691. C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
  692. really-lwlib:
  693.     cd ${lwlibdir}; ${MAKE} ${MFLAGS} LWLIB_OPTIONS \
  694.     CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
  695.     "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
  696.     "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
  697.     "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
  698.     "C_SWITCH_SITE=$(C_SWITCH_SITE_1)" \
  699.     "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
  700.     "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
  701.     @true  /* make -t should not create really-lwlib.  */
  702. #else /* not USE_X_TOOLKIT */
  703. #ifdef HAVE_X_MENU
  704. $(OLDXMENU): really-oldXMenu
  705.     -rm -f $(OLDXMENU) /* We might have a link to an old version.  */
  706.     ${LN_S} ${oldXMenudir}libXMenu11.a $(OLDXMENU)
  707.  
  708. /* Encode the values of these two macros in Make variables,
  709.    so we can use $(...) to substitute their values within "...".  */
  710. C_SWITCH_MACHINE_1 = C_SWITCH_MACHINE
  711. C_SWITCH_SYSTEM_1 = C_SWITCH_SYSTEM
  712. C_SWITCH_SITE_1 = C_SWITCH_SITE
  713. C_SWITCH_X_SITE_1 = C_SWITCH_X_SITE
  714. C_SWITCH_X_MACHINE_1 = C_SWITCH_X_MACHINE
  715. C_SWITCH_X_SYSTEM_1 = C_SWITCH_X_SYSTEM
  716. really-oldXMenu:
  717.     cd ${oldXMenudir}; ${MAKE} ${MFLAGS} OLDXMENU_OPTIONS \
  718.     CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}' \
  719.     "C_SWITCH_X_SITE=$(C_SWITCH_X_SITE_1)" \
  720.     "C_SWITCH_X_MACHINE=$(C_SWITCH_X_MACHINE_1)" \
  721.     "C_SWITCH_X_SYSTEM=$(C_SWITCH_X_SYSTEM_1)" \
  722.     "C_SWITCH_SITE=$(C_SWITCH_SITE_1)" \
  723.     "C_SWITCH_MACHINE=$(C_SWITCH_MACHINE_1)" \
  724.     "C_SWITCH_SYSTEM=$(C_SWITCH_SYSTEM_1)"
  725.     @true  /* make -t should not create really-oldXMenu.  */
  726. #endif /* HAVE_X_MENU */
  727. #endif /* not USE_X_TOOLKIT */
  728. #endif /* HAVE_X11 */
  729. #endif /* HAVE_X_WINDOWS */
  730.  
  731. paths.h: paths.h.in
  732.     @echo "The file paths.h needs to be set up from paths.h.in."
  733.     @echo "Consult the file \`INSTALL' for instructions for building Emacs."
  734.     exit 1
  735.  
  736. config.h: config.h.in
  737.     @echo "The file config.h needs to be set up from config.h.in."
  738.     @echo "Consult the file \`INSTALL' for instructions for building Emacs."
  739.     exit 1
  740.  
  741. /* Some machines have alloca built-in.
  742.    They should define HAVE_ALLOCA, or may just let alloca.s
  743.    be used but generate no code.
  744.    Some have it written in assembler in alloca.s.
  745.    Some use the C version in alloca.c (these define C_ALLOCA in config.h).
  746.    */
  747.  
  748. #ifdef C_ALLOCA
  749. /* We could put something in alloca.c to #define free and malloc
  750.    whenever emacs was #defined, but that's not appropriate for all
  751.    users of alloca in Emacs.  Check out ../lib-src/getopt.c.  */
  752. alloca.o : alloca.c
  753.     $(CC) -c $(CPPFLAGS) -Dfree=xfree -Dmalloc=xmalloc \
  754.     $(ALL_CFLAGS) ${srcdir}/alloca.c
  755. #else
  756. #ifndef HAVE_ALLOCA
  757. alloca.o : alloca.s $(config_h)
  758. /* $(CPP) is cc -E, which may get confused by filenames
  759.    that do not end in .c.  So copy file to a safe name.  */
  760.     -rm -f allocatem.c
  761.     cp ${srcdir}/alloca.s allocatem.c
  762. /* Remove any ^L, blank lines, and preprocessor comments,
  763.    since some assemblers barf on them.  Use a different basename for the
  764.    output file, since some stupid compilers (Green Hill's) use that
  765.    name for the intermediate assembler file. */
  766.     $(CPP) $(CPPFLAGS) $(ALL_CFLAGS) allocatem.c | \
  767.     sed -e 's/ //' -e 's/^#.*//' | \
  768.     sed -n -e '/^..*$$/p' > allocax.s
  769.     -rm -f alloca.o
  770. /* Xenix, in particular, needs to run assembler via cc.  */
  771.     $(CC) -c allocax.s
  772.     mv allocax.o alloca.o
  773.     -rm -f allocax.s allocatem.c
  774. #endif /* HAVE_ALLOCA */
  775. #endif /* ! defined (C_ALLOCA) */
  776.  
  777. /* Nearly all the following files depend on lisp.h,
  778.    but it is not included as a dependency because
  779.    it is so often changed in ways that do not require any recompilation
  780.    and so rarely changed in ways that do require any.  */
  781.  
  782. abbrev.o: abbrev.c buffer.h commands.h $(config_h) 
  783. buffer.o: buffer.c buffer.h commands.h window.h \
  784.    INTERVAL_SRC blockinput.h $(config_h) 
  785. callint.o: callint.c window.h commands.h buffer.h mocklisp.h \
  786.    keyboard.h $(config_h)
  787. callproc.o: callproc.c paths.h buffer.h commands.h $(config_h) \
  788.     process.h systty.h syssignal.h
  789. casefiddle.o: casefiddle.c syntax.h commands.h buffer.h $(config_h) 
  790. casetab.o: casetab.c buffer.h $(config_h)
  791. cm.o: cm.c cm.h termhooks.h $(config_h)
  792. cmds.o: cmds.c syntax.h buffer.h commands.h $(config_h) 
  793. pre-crt0.o: pre-crt0.c
  794. crt0.o: crt0.c $(config_h)
  795.     CRT0_COMPILE ${srcdir}/crt0.c
  796. dired.o: dired.c commands.h buffer.h $(config_h) regex.h
  797. dispnew.o: dispnew.c commands.h frame.h window.h buffer.h dispextern.h \
  798.    termchar.h termopts.h termhooks.h cm.h disptab.h systty.h systime.h $(config_h)
  799. doc.o: doc.c $(config_h) paths.h buffer.h keyboard.h
  800. doprnt.o: doprnt.c $(config_h)
  801. editfns.o: editfns.c window.h buffer.h systime.h INTERVAL_SRC $(config_h) 
  802. emacs.o: emacs.c commands.h systty.h syssignal.h process.h INTERVAL_SRC $(config_h) 
  803. fileio.o: fileio.c window.h buffer.h systime.h INTERVAL_SRC $(config_h) 
  804. filelock.o: filelock.c buffer.h paths.h $(config_h)
  805. filemode.o: filemode.c  $(config_h)
  806. getloadavg.o: getloadavg.c $(config_h)
  807. indent.o: indent.c frame.h window.h indent.h buffer.h $(config_h) termchar.h \
  808.    termopts.h disptab.h
  809. insdel.o: insdel.c window.h buffer.h INTERVAL_SRC blockinput.h $(config_h)
  810. keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h \
  811.    commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
  812.    systty.h systime.h dispextern.h intervals.h blockinput.h $(config_h) 
  813. keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
  814.    $(config_h) 
  815. lastfile.o: lastfile.c  $(config_h)
  816. macros.o: macros.c window.h buffer.h commands.h macros.h $(config_h)
  817. malloc.o: malloc.c $(config_h)
  818. gmalloc.o: gmalloc.c $(config_h)
  819. ralloc.o: ralloc.c $(config_h)
  820. vm-limit.o: vm-limit.c mem-limits.h $(config_h) 
  821. marker.o: marker.c buffer.h $(config_h) 
  822. minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h \
  823.    buffer.h commands.h $(config_h) 
  824. mocklisp.o: mocklisp.c buffer.h $(config_h)
  825. process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
  826.    commands.h syssignal.h systime.h systty.h syswait.h frame.h $(config_h) 
  827. regex.o: regex.c syntax.h buffer.h $(config_h) regex.h 
  828. frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
  829.    buffer.h $(config_h)
  830. scroll.o: scroll.c termchar.h $(config_h) dispextern.h frame.h
  831. search.o: search.c regex.h commands.h buffer.h syntax.h blockinput.h $(config_h) 
  832. syntax.o: syntax.c syntax.h buffer.h commands.h $(config_h) 
  833. sysdep.o: sysdep.c $(config_h) dispextern.h termhooks.h termchar.h termopts.h \
  834.    frame.h syssignal.h systty.h systime.h syswait.h blockinput.h window.h
  835. term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \
  836.    disptab.h
  837. termcap.o: termcap.c $(config_h)
  838. terminfo.o: terminfo.c $(config_h)
  839. tparam.o: tparam.c $(config_h)
  840. undo.o: undo.c buffer.h commands.h $(config_h) 
  841. /* This hack is to discard any space that cpp might put at the beginning
  842.    of UNEXEC when substituting it in.  */
  843. UNEXEC_ALIAS=UNEXEC
  844. $(UNEXEC_ALIAS): UNEXEC_SRC $(config_h)
  845. widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h $(config_h)
  846. window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
  847.    termhooks.h disptab.h keyboard.h $(config_h)
  848. xdisp.o: xdisp.c macros.h commands.h indent.h buffer.h dispextern.h \
  849.    termchar.h frame.h window.h disptab.h termhooks.h $(config_h) 
  850. xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
  851.    window.h $(config_h) 
  852. xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h \
  853.    blockinput.h $(config_h)
  854. xmenu.o: xmenu.c xterm.h window.h dispextern.h frame.h keyboard.h \
  855.    blockinput.h $(config_h)
  856. xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h \
  857.   dispextern.h frame.h disptab.h blockinput.h systime.h syssignal.h \
  858.   keyboard.h gnu.h sink.h sinkmask.h $(config_h)
  859. xselect.o: xselect.c dispextern.h frame.h xterm.h blockinput.h $(config_h) 
  860. xrdb.o: xrdb.c $(config_h)
  861. hftctl.o: hftctl.c $(config_h)
  862.  
  863. /* The files of Lisp proper */
  864.  
  865. alloc.o: alloc.c frame.h window.h buffer.h  puresize.h syssignal.h
  866. alloc.o: blockinput.h $(config_h) INTERVAL_SRC
  867. bytecode.o: bytecode.c buffer.h $(config_h)
  868. data.o: data.c buffer.h puresize.h syssignal.h $(config_h)
  869. eval.o: eval.c commands.h keyboard.h blockinput.h $(config_h)
  870. floatfns.o: floatfns.c $(config_h)
  871. fns.o: fns.c commands.h $(config_h) frame.h buffer.h keyboard.h INTERVAL_SRC
  872. print.o: print.c process.h frame.h window.h buffer.h $(config_h)
  873. lread.o: lread.c commands.h keyboard.h buffer.h paths.h $(config_h) \
  874.  termhooks.h
  875.  
  876. /* Text properties support */
  877. textprop.o: textprop.c buffer.h intervals.h $(config_h)
  878. intervals.o: intervals.c buffer.h intervals.h puresize.h $(config_h)
  879.  
  880. /* System-specific programs to be made.
  881.    OTHER_FILES, OBJECTS_SYSTEM and OBJECTS_MACHINE
  882.    select which of these should be compiled.  */
  883.  
  884. sunfns.o: sunfns.c buffer.h $(config_h)
  885.  
  886. ${libsrc}emacstool: ${libsrc}emacstool.c
  887.     cd ${libsrc}; ${MAKE} ${MFLAGS} emacstool
  888. mostlyclean:
  889.     rm -f temacs prefix-args core \#* *.o libXMenu11.a liblw.a
  890.     rm -f ../etc/DOC
  891. clean: mostlyclean
  892.     rm -f emacs-* emacs
  893. /**/# This is used in making a distribution.
  894. /**/# Do not use it on development directories!
  895. distclean: clean
  896.     rm -f paths.h config.h Makefile Makefile.in ../etc/DOC-*
  897. realclean: distclean
  898.     rm -f TAGS
  899. versionclean:
  900.     -rm -f emacs emacs-* ../etc/DOC*
  901. extraclean: distclean
  902.     -rm -f *~ \#* m/?*~ s/?*~
  903.  
  904. /* The rule for the [sm] files has to be written a little funny to
  905.    avoid looking like a C comment to CPP. */
  906. SOURCES = *.[ch] [sm]/?* COPYING ymakefile \
  907.     config.h.in README COPYING ChangeLog vms.pp-trans
  908. unlock:
  909.     chmod u+w $(SOURCES)
  910.  
  911. relock:
  912.     chmod -w $(SOURCES)
  913.     chmod +w paths.h
  914.  
  915. /* Arrange to make a tags table in ../lisp, and another in this dir
  916.    which includes ../lisp/TAGS by reference.  */
  917. ctagsfiles = [a-zA-Z]*.[hc]
  918. lisptagsfiles = ../lisp/[a-zA-Z]*.el ../lisp/term/[a-zA-Z]*.el
  919. TAGS: $(ctagsfiles)
  920.     ../lib-src/etags --include=../lisp/TAGS $(ctagsfiles)
  921. ../lisp/TAGS: $(lisptagsfiles)
  922.     cd ../lisp; $(MAKE) TAGS
  923. tags: TAGS ../lisp/TAGS
  924. .PHONY: tags
  925.